const cacheName = "pwa-cache-v1";

self.addEventListener("install", evt => {
   console.log("Service worker installed")
   // 安装完成后，serviceWorker会进入等待阶段，旧的serviceWorker仍在运行,除非所有旧的serviceWorker停止使用
   // 需要跳过等待阶段，以使用新的serviceWorker。
  //  self.skipWaiting();
   const cacheFiles = [
      "/img/cat.svg",
   ];
  // 可以在安装事件中，对静态资源进行缓存，这样在离线时，就可以直接访问缓存中的资源。
  evt.waitUntil(
    caches.open(cacheName)
    .then(cache => {
      return cache.addAll(cacheFiles)
    })
  );
});

self.addEventListener("activate", event => {
  // 让已激活的Service Worker立即接管所有范围内的客户端（页面）
  // 默认情况下，新激活的Service Worker不会立即控制现有客户端，而是等到下一次页面导航（如刷新）。调用clients.claim()会立即让新Service Worker接管所有客户端
  //  self.clients.claim();
   console.log("Service worker activated")
});

self.addEventListener('fetch', evt => {
  const url = new URL(evt.request.url)
  if (url.origin === location.origin && url.pathname === '/img/dog.svg') {
    evt.respondWith(
      caches.match('/img/cat.svg')
    )
  }
})